#ifndef BCRYPT_H
#define BCRYPT_H

#include <string>

/// @file bcrypt.h
/// @brief Bcrypt helper functions for password hashing and verification
/// 
/// This file defines the interface for bcrypt helper functions used
/// in the authentication system.

/// @brief Hash a password using bcrypt
/// 
/// @param password Plain text password to hash
/// @return Hashed password string
/// 
/// @pre password != nullptr && !password.empty()
/// @post Returns a bcrypt-hashed string representation of the password
std::string hash_password(const std::string& password);

/// @brief Verify a password against a hash
/// 
/// @param password Plain text password to verify
/// @param hash Hash to verify against
/// @return true if password matches hash, false otherwise
/// 
/// @pre password != nullptr && !password.empty()
/// @pre hash != nullptr && !hash.empty()
/// @post Returns boolean indicating if password matches hash
bool verify_password(const std::string& password, const std::string& hash);

#endif // BCRYPT_H